package kcms.common.interceptor;

import java.util.Map;

import kcms.db.User;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class LoginInterceptor extends AbstractInterceptor {
	private static final long serialVersionUID = 1L;
	@Override 
	public String intercept(ActionInvocation invocation) throws Exception {
        // 取得请求的Action名
        String name = invocation.getInvocationContext().getName();
        System.out.println(name);
        if (name.equals("user_loginpage")||name.equals("user_regpage")||name.equals("user_login")||name.equals("user_register")||name.equals("common_verify")) {
            // 如果用户想登录，则使之通过
            return invocation.invoke();
        } else {
            // 取得Session。
            ActionContext ac = invocation.getInvocationContext();
            Map session =    (Map)ac.get(ServletActionContext.SESSION);
            if (session == null) {
                // 如果Session为空，则让用户登陆。
                return "login";
            } else {
                User user = (User)session.get("user");
                if (user == null) {
                    // Session不为空，但Session中没有用户信息，
                    // 则让用户登陆
                    return "login";
                } else {
                    // 用户已经登陆，放行
                    return invocation.invoke();
                }
            }
        }
    }
}
